package fiuba.algo3;

import fiuba.algo3.motor.MotorXML;
import fiuba.algo3.persistencia.ConstructorSospechoso;
//import org.w3c.dom.Node;

public abstract class SistemaInterpol
{
	private static Sospechoso listaDeSospechosos[];

	public static void IniciarSistema()
	{
		String nombreArchivo = "baseDeDatos/sospechosos.xml";
//		listaDeSospechosos = ConstructorSospechoso.construir(MotorXML.obtenerListado(nombreArchivo));
		listaDeSospechosos = ConstructorSospechoso.construir(MotorXML.obtenerListadoXML(nombreArchivo));
	}

	// Tiene que haber 1 Sospechoso como minimo.
	public static Sospechoso obtenerSospechosoAleatorio()
	{
		int indice = (int)Math.round(Math.random()*(listaDeSospechosos.length-1));

		return listaDeSospechosos[indice];
	}

	public static int contarCantidadOcurrencias(Perfil perfilABuscar)
	{
		int cantidadOcurrencias = 0;
		for (Sospechoso sospechoso : listaDeSospechosos)
		{
			if (sospechoso.coincidePerfil(perfilABuscar))
				cantidadOcurrencias++;
		}

		return cantidadOcurrencias;
	}
	
	private static Sospechoso[] generarSublista(Perfil perfilABuscar)
	{
		int cantidadOcurrencias = contarCantidadOcurrencias(perfilABuscar);

		Sospechoso[] sublista = new Sospechoso[cantidadOcurrencias];
		for (int i = 0, j = 0; i < listaDeSospechosos.length; i++)
			{
				if (listaDeSospechosos[i].coincidePerfil(perfilABuscar))
				{
					sublista[j] = listaDeSospechosos[i];
					j++;
				}
			}

		return sublista;
	}

	public static Sospechoso[] obtenerListaDeSospechosos(Perfil perfilABuscar)
	{
		return generarSublista(perfilABuscar);
	}
/*
	public static void leerListaDeSospechososDeArchivo(String nombreArchivo) 
	{
		//Por ahora, para probar el resto de las funcionalidades, genero una lista fija trucha
		ListaDeSospechosos lista = new ListaDeSospechosos();
		Perfil perfilMaxi = new Perfil("masculino","","","barba","Millenium Falcon");
		Perfil perfilTomi = new Perfil("masculino","Tennis","","","Audi R8");
		Perfil perfilCami = new Perfil("masculino","","negro","","Citroen DS");
		
		lista.agregar(new Sospechoso("Maxi", perfilMaxi));
		lista.agregar(new Sospechoso("Tomi", perfilTomi));
		lista.agregar(new Sospechoso("Cami", perfilCami));

		listaDeSospechosos = lista;

		IniciarSistema();
	}
*/
	public static Sospechoso obtenerSospechosoNro(int i)
	{
		return listaDeSospechosos[i];
	}

	public static Sospechoso[] obtenerListaDeSospechosos() {
		
		return listaDeSospechosos;
	}

}













//
//public static List<Sospechoso> obtenerListaDeSospechosos()
//{
//	return listaDeSospechosos;		
//}
//
//public static List<Sospechoso> obtenerListaDeSospechosos(Perfil perfilABuscar)
//{
//	List<Sospechoso> listaPosibleDeSospechosos = new ArrayList<Sospechoso>();
//	
//	Iterator<Sospechoso> iterador = listaDeSospechosos.iterator();
//
//	while(iterador.hasNext())
//	{
//		Sospechoso sospechoso = iterador.next();
//		if (sospechoso.coincidePerfil(perfilABuscar))
//			listaPosibleDeSospechosos.add(sospechoso);
//	}
//
//	return listaPosibleDeSospechosos;
//}
